/****************************************************************
 * Fulguro
 * Copyright (C) 2004 Christophe Clienti
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the
 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 * Boston, MA 02111-1307, USA.
 ***************************************************************/


%module (docstring="Fulguro Arithmetic And Logic Module") flgrarith

%include ../common/common.i
%include ../common/typemap_flgr_vector.i

 /*********************** Include for wrapper **********************/

%inline %{

#include <flgrCoreTypes.h>
#include <flgrCoreErrors.h>
#include <flgrCoreVector.h>
#include <flgrCoreData.h>
#include <flgrArith.h>
#include <flgrArithComplex.h>
#include <flgrArithShift.h>

  %}

%callback("CB_%(upper)s");

/*********************** Documentation ***********************/

%feature("autodoc","""
[out] FLGR_Data1D destination
[in] FLGR_Data1D 
[in] FLGR_Data1D or FLGR_Vector or Scalar or List/Array
[return] FLGR_Ret\n
Compute the infemum pixel by pixel of two images
The return value correspond to constant FLGR_RET_OK,...
""") flgr1d_arith_inf;
%feature("autodoc"," ") flgr1d_arith_const_inf;

%feature("autodoc","""
[out] FLGR_Data1D destination
[in] FLGR_Data1D 
[in] FLGR_Data1D or FLGR_Vector or Scalar or List/Array
[return] FLGR_Ret\n
Compute the supremum pixel by pixel of two images
The return value correspond to constant FLGR_RET_OK,...
""") flgr1d_arith_sup;
%feature("autodoc"," ") flgr1d_arith_const_sup;

%feature("autodoc","""
[out] FLGR_Data1D destination
[in] FLGR_Data1D 
[in] FLGR_Data1D or FLGR_Vector or Scalar or List/Array
[return] FLGR_Ret\n
Compute logical AND pixel by pixel of two images
The return value correspond to constant FLGR_RET_OK,...
""") flgr1d_arith_and;
%feature("autodoc"," ") flgr1d_arith_const_and;

%feature("autodoc","""
[out] FLGR_Data1D destination
[in] FLGR_Data1D 
[in] FLGR_Data1D or FLGR_Vector or Scalar or List/Array
[return] FLGR_Ret\n
Compute logical OR pixel by pixel of two images
The return value correspond to constant FLGR_RET_OK,...
""") flgr1d_arith_or;
%feature("autodoc"," ") flgr1d_arith_const_or;

%feature("autodoc","""
[out] FLGR_Data1D destination
[in] FLGR_Data1D 
[in] FLGR_Data1D or FLGR_Vector or Scalar or List/Array
[return] FLGR_Ret\n
Compute logical XOR pixel by pixel of two images
The return value correspond to constant FLGR_RET_OK,...
""") flgr1d_arith_xor;

%feature("autodoc","""
[out] FLGR_Data1D destination
[in] FLGR_Data1D 
[in] FLGR_Data1D or FLGR_Vector or Scalar or List/Array
[return] FLGR_Ret\n
Compute Arctangent pixel by pixel of two images
The return value correspond to constant FLGR_RET_OK,...
""") flgr1d_arith_atan2;

%feature("autodoc","""
[out] FLGR_Data1D destination
[in] FLGR_Data1D 
[in] FLGR_Data1D or FLGR_Vector or Scalar or List/Array
[return] FLGR_Ret\n
Compute Argument pixel by pixel of two images
The return value correspond to constant FLGR_RET_OK,...
""") flgr1d_arith_argument;

%feature("autodoc","""
[out] FLGR_Data1D destination
[in] FLGR_Data1D 
[in] FLGR_Data1D or FLGR_Vector or Scalar or List/Array
[return] FLGR_Ret\n
Compute Module pixel by pixel of two images
The return value correspond to constant FLGR_RET_OK,...
""") flgr1d_arith_module;

%feature("autodoc","""
[out] FLGR_Data1D destination
[in] FLGR_Data1D 
[in] FLGR_Data1D or FLGR_Vector or Scalar or List/Array
[return] FLGR_Ret\n
Compute Saturated Multiplication pixel by pixel of two images
The return value correspond to constant FLGR_RET_OK,...
""") flgr1d_arith_multsat;
%feature("autodoc"," ") flgr1d_arith_const_multsat;

%feature("autodoc","""
[out] FLGR_Data1D destination
[in] FLGR_Data1D 
[in] FLGR_Data1D or FLGR_Vector or Scalar or List/Array
[return] FLGR_Ret\n
Compute Saturated Addition pixel by pixel of two images
The return value correspond to constant FLGR_RET_OK,...
""") flgr1d_arith_addsat;
%feature("autodoc"," ") flgr1d_arith_const_addsat;

%feature("autodoc","""
[out] FLGR_Data1D destination
[in] FLGR_Data1D 
[in] FLGR_Data1D or FLGR_Vector or Scalar or List/Array
[return] FLGR_Ret\n
Compute Saturated Substraction pixel by pixel of two images
The return value correspond to constant FLGR_RET_OK,...
""") flgr1d_arith_subsat;
%feature("autodoc"," ") flgr1d_arith_const_subsat;

%feature("autodoc","""
[out] FLGR_Data1D destination
[in] FLGR_Data1D 
[in] FLGR_Data1D 
[return] FLGR_Ret\n
Compute Division pixel by pixel of two images
The return value correspond to constant FLGR_RET_OK,...
""") flgr1d_arith_div;
%feature("autodoc"," ") flgr1d_arith_const_div;

%feature("autodoc","""
[out] FLGR_Data1D destination
[in] FLGR_Data1D 
[in] FLGR_Data1D or FLGR_Vector or Scalar or List/Array
[return] FLGR_Ret\n
Compute Multiplication pixel by pixel of two images
The return value correspond to constant FLGR_RET_OK,...
""") flgr1d_arith_mult;
%feature("autodoc"," ") flgr1d_arith_const_mult;

%feature("autodoc","""
[out] FLGR_Data1D destination
[in] FLGR_Data1D 
[in] FLGR_Data1D or FLGR_Vector or Scalar or List/Array
[return] FLGR_Ret\n
Compute Substraction pixel by pixel of two images
The return value correspond to constant FLGR_RET_OK,...
""") flgr1d_arith_sub;
%feature("autodoc"," ") flgr1d_arith_const_sub;

%feature("autodoc","""
[out] FLGR_Data1D destination
[in] FLGR_Data1D 
[in] FLGR_Data1D or FLGR_Vector or Scalar or List/Array
[return] FLGR_Ret\n
Compute Addition pixel by pixel of two images
The return value correspond to constant FLGR_RET_OK,...
""") flgr1d_arith_add;
%feature("autodoc"," ") flgr1d_arith_const_add;

%feature("autodoc","""
[out] FLGR_Data1D destination
[in] FLGR_Data1D source
[return] FLGR_Ret\n
Compute Arctan over all source pixels
The return value correspond to constant FLGR_RET_OK,...
""") flgr1d_arith_atan;

%feature("autodoc","""
[out] FLGR_Data1D destination
[in] FLGR_Data1D source
[return] FLGR_Ret\n
Compute Arcsin over all source pixels
The return value correspond to constant FLGR_RET_OK,...
""") flgr1d_arith_asin;

%feature("autodoc","""
[out] FLGR_Data1D destination
[in] FLGR_Data1D source
[return] FLGR_Ret\n
Compute Arccos over all source pixels
The return value correspond to constant FLGR_RET_OK,...
""") flgr1d_arith_acos;

%feature("autodoc","""
[out] FLGR_Data1D destination
[in] FLGR_Data1D source
[return] FLGR_Ret\n
Compute Arctan over all source pixels
The return value correspond to constant FLGR_RET_OK,...
""") flgr1d_arith_tan;

%feature("autodoc","""
[out] FLGR_Data1D destination
[in] FLGR_Data1D source
[return] FLGR_Ret\n
Compute Arcsin over all source pixels
The return value correspond to constant FLGR_RET_OK,...
""") flgr1d_arith_sin;

%feature("autodoc","""
[out] FLGR_Data1D destination
[in] FLGR_Data1D source
[return] FLGR_Ret\n
Compute cos over all source pixels
The return value correspond to constant FLGR_RET_OK,...
""") flgr1d_arith_cos;

%feature("autodoc","""
[out] FLGR_Data1D destination
[in] FLGR_Data1D source
[return] FLGR_Ret\n
Compute abs over all source pixels
The return value correspond to constant FLGR_RET_OK,...
""") flgr1d_arith_abs;

%feature("autodoc","""
[out] FLGR_Data1D destination
[in] FLGR_Data1D source
[return] FLGR_Ret\n
Compute invert over all source pixels
The return value correspond to constant FLGR_RET_OK,...
""") flgr1d_arith_invert;

%feature("autodoc","""
[out] FLGR_Data1D destination
[in] FLGR_Data1D source
[in] Float Power
[return] FLGR_Ret\n
Compute power over all source pixels
The return value correspond to constant FLGR_RET_OK,...
""") flgr1d_arith_powb;

%feature("autodoc","""
[out] FLGR_Data1D destination
[in] FLGR_Data1D source
[in] Float Base
[return] FLGR_Ret\n
Compute log over all source pixels
The return value correspond to constant FLGR_RET_OK,...
""") flgr1d_arith_logb;

%feature("autodoc","""
[out] FLGR_Data1D destination
[in] FLGR_Data1D source
[in] Float Base
[return] FLGR_Ret\n
Round all source pixels
The return value correspond to constant FLGR_RET_OK,...
""") flgr1d_arith_ceil;

%feature("autodoc","""
[out] FLGR_Data1D destination
[in] FLGR_Data1D source
[in] Float Base
[return] FLGR_Ret\n
Floor all source pixels
The return value correspond to constant FLGR_RET_OK,...
""") flgr1d_arith_floor;


%feature("autodoc","""
[out] FLGR_Data1D destination (scalar image ie spp=1)
[in] FLGR_Data1D source (complex image ie spp=2)
[return] FLGR_Ret\n
Compute module of a complex image
The return value correspond to constant FLGR_RET_OK,...
""") flgr1d_arith_complex_module;

%feature("autodoc","""
[out] FLGR_Data1D destination (scalar image ie spp=1)
[in] FLGR_Data1D source (complex image ie spp=2)
Compute argument of a complex image
The return value correspond to constant FLGR_RET_OK,...
""") flgr1d_arith_complex_argument;

%feature("autodoc","""
[out] FLGR_Data1D destination (complex)
[in] FLGR_Data1D source (module)
[in] FLGR_Data1D source (argument)
[return] FLGR_Ret\n
Construct a complex image from a module image and a argument image
The return value correspond to constant FLGR_RET_OK,...
""") flgr1d_arith_complex_build;






%feature("autodoc","""
[out] FLGR_Data2D destination
[in] FLGR_Data2D 
[in] FLGR_Data2D or FLGR_Vector or Scalar or List/Array
[return] FLGR_Ret\n
Compute the infemum pixel by pixel of two images
The return value correspond to constant FLGR_RET_OK,...
""") flgr2d_arith_inf;
%feature("autodoc"," ") flgr2d_arith_const_inf;

%feature("autodoc","""
[out] FLGR_Data2D destination
[in] FLGR_Data2D 
[in] FLGR_Data2D or FLGR_Vector or Scalar or List/Array
[return] FLGR_Ret\n
Compute the supremum pixel by pixel of two images
The return value correspond to constant FLGR_RET_OK,...
""") flgr2d_arith_sup;
%feature("autodoc"," ") flgr2d_arith_const_sup;

%feature("autodoc","""
[out] FLGR_Data2D destination
[in] FLGR_Data2D 
[in] FLGR_Data2D or FLGR_Vector or Scalar or List/Array
[return] FLGR_Ret\n
Compute logical AND pixel by pixel of two images
The return value correspond to constant FLGR_RET_OK,...
""") flgr2d_arith_and;
%feature("autodoc"," ") flgr2d_arith_const_and;

%feature("autodoc","""
[out] FLGR_Data2D destination
[in] FLGR_Data2D 
[in] FLGR_Data2D or FLGR_Vector or Scalar or List/Array
[return] FLGR_Ret\n
Compute logical OR pixel by pixel of two images
The return value correspond to constant FLGR_RET_OK,...
""") flgr2d_arith_or;
%feature("autodoc"," ") flgr2d_arith_const_or;

%feature("autodoc","""
[out] FLGR_Data2D destination
[in] FLGR_Data2D 
[in] FLGR_Data2D or FLGR_Vector or Scalar or List/Array
[return] FLGR_Ret\n
Compute logical XOR pixel by pixel of two images
The return value correspond to constant FLGR_RET_OK,...
""") flgr2d_arith_xor;

%feature("autodoc","""
[out] FLGR_Data2D destination
[in] FLGR_Data2D 
[in] FLGR_Data2D or FLGR_Vector or Scalar or List/Array
[return] FLGR_Ret\n
Compute Arctangent pixel by pixel of two images
The return value correspond to constant FLGR_RET_OK,...
""") flgr2d_arith_atan2;

%feature("autodoc","""
[out] FLGR_Data2D destination
[in] FLGR_Data2D 
[in] FLGR_Data2D or FLGR_Vector or Scalar or List/Array
[return] FLGR_Ret\n
Compute Argument pixel by pixel of two images
The return value correspond to constant FLGR_RET_OK,...
""") flgr2d_arith_argument;

%feature("autodoc","""
[out] FLGR_Data2D destination
[in] FLGR_Data2D 
[in] FLGR_Data2D or FLGR_Vector or Scalar or List/Array
[return] FLGR_Ret\n
Compute Module pixel by pixel of two images
The return value correspond to constant FLGR_RET_OK,...
""") flgr2d_arith_module;

%feature("autodoc","""
[out] FLGR_Data2D destination
[in] FLGR_Data2D 
[in] FLGR_Data2D or FLGR_Vector or Scalar or List/Array
[return] FLGR_Ret\n
Compute Saturated Multiplication pixel by pixel of two images
The return value correspond to constant FLGR_RET_OK,...
""") flgr2d_arith_multsat;
%feature("autodoc"," ") flgr2d_arith_const_multsat;

%feature("autodoc","""
[out] FLGR_Data2D destination
[in] FLGR_Data2D 
[in] FLGR_Data2D or FLGR_Vector or Scalar or List/Array
[return] FLGR_Ret\n
Compute Saturated Addition pixel by pixel of two images
The return value correspond to constant FLGR_RET_OK,...
""") flgr2d_arith_addsat;
%feature("autodoc"," ") flgr2d_arith_const_addsat;

%feature("autodoc","""
[out] FLGR_Data2D destination
[in] FLGR_Data2D 
[in] FLGR_Data2D or FLGR_Vector or Scalar or List/Array
[return] FLGR_Ret\n
Compute Saturated Substraction pixel by pixel of two images
The return value correspond to constant FLGR_RET_OK,...
""") flgr2d_arith_subsat;
%feature("autodoc"," ") flgr2d_arith_const_subsat;

%feature("autodoc","""
[out] FLGR_Data2D destination
[in] FLGR_Data2D 
[in] FLGR_Data2D 
[return] FLGR_Ret\n
Compute Division pixel by pixel of two images
The return value correspond to constant FLGR_RET_OK,...
""") flgr2d_arith_div;
%feature("autodoc"," ") flgr2d_arith_const_div;

%feature("autodoc","""
[out] FLGR_Data2D destination
[in] FLGR_Data2D 
[in] FLGR_Data2D or FLGR_Vector or Scalar or List/Array
[return] FLGR_Ret\n
Compute Multiplication pixel by pixel of two images
The return value correspond to constant FLGR_RET_OK,...
""") flgr2d_arith_mult;
%feature("autodoc"," ") flgr2d_arith_const_mult;

%feature("autodoc","""
[out] FLGR_Data2D destination
[in] FLGR_Data2D 
[in] FLGR_Data2D or FLGR_Vector or Scalar or List/Array
[return] FLGR_Ret\n
Compute Substraction pixel by pixel of two images
The return value correspond to constant FLGR_RET_OK,...
""") flgr2d_arith_sub;
%feature("autodoc"," ") flgr2d_arith_const_sub;

%feature("autodoc","""
[out] FLGR_Data2D destination
[in] FLGR_Data2D 
[in] FLGR_Data2D or FLGR_Vector or Scalar or List/Array
[return] FLGR_Ret\n
Compute Addition pixel by pixel of two images
The return value correspond to constant FLGR_RET_OK,...
""") flgr2d_arith_add;
%feature("autodoc"," ") flgr2d_arith_const_add;

%feature("autodoc","""
[out] FLGR_Data2D destination
[in] FLGR_Data2D source
[return] FLGR_Ret\n
Compute Arctan over all source pixels
The return value correspond to constant FLGR_RET_OK,...
""") flgr2d_arith_atan;

%feature("autodoc","""
[out] FLGR_Data2D destination
[in] FLGR_Data2D source
[return] FLGR_Ret\n
Compute Arcsin over all source pixels
The return value correspond to constant FLGR_RET_OK,...
""") flgr2d_arith_asin;

%feature("autodoc","""
[out] FLGR_Data2D destination
[in] FLGR_Data2D source
[return] FLGR_Ret\n
Compute Arccos over all source pixels
The return value correspond to constant FLGR_RET_OK,...
""") flgr2d_arith_acos;

%feature("autodoc","""
[out] FLGR_Data2D destination
[in] FLGR_Data2D source
[return] FLGR_Ret\n
Compute Arctan over all source pixels
The return value correspond to constant FLGR_RET_OK,...
""") flgr2d_arith_tan;

%feature("autodoc","""
[out] FLGR_Data2D destination
[in] FLGR_Data2D source
[return] FLGR_Ret\n
Compute Arcsin over all source pixels
The return value correspond to constant FLGR_RET_OK,...
""") flgr2d_arith_sin;

%feature("autodoc","""
[out] FLGR_Data2D destination
[in] FLGR_Data2D source
[return] FLGR_Ret\n
Compute cos over all source pixels
The return value correspond to constant FLGR_RET_OK,...
""") flgr2d_arith_cos;

%feature("autodoc","""
[out] FLGR_Data2D destination
[in] FLGR_Data2D source
[return] FLGR_Ret\n
Compute abs over all source pixels
The return value correspond to constant FLGR_RET_OK,...
""") flgr2d_arith_abs;

%feature("autodoc","""
[out] FLGR_Data2D destination
[in] FLGR_Data2D source
[return] FLGR_Ret\n
Compute invert over all source pixels
The return value correspond to constant FLGR_RET_OK,...
""") flgr2d_arith_invert;

%feature("autodoc","""
[out] FLGR_Data2D destination
[in] FLGR_Data2D source
[in] Float Power
[return] FLGR_Ret\n
Compute power over all source pixels
The return value correspond to constant FLGR_RET_OK,...
""") flgr2d_arith_powb;

%feature("autodoc","\
[out] FLGR_Data2D destination\
[in] FLGR_Data2D source\
[in] Float Base\
[return] FLGR_Ret\n\
Compute log over all source pixels\
The return value correspond to constant FLGR_RET_OK,...\
") flgr2d_arith_logb;

%feature("autodoc","""
[out] FLGR_Data2D destination
[in] FLGR_Data2D source
[in] Float Base
[return] FLGR_Ret\n
Round all source pixels
The return value correspond to constant FLGR_RET_OK,...
""") flgr2d_arith_ceil;

%feature("autodoc","""
[out] FLGR_Data2D destination
[in] FLGR_Data2D source
[in] Float Base
[return] FLGR_Ret\n
Floor all source pixels
The return value correspond to constant FLGR_RET_OK,...
""") flgr2d_arith_floor;

%feature("autodoc","""
[out] FLGR_Data2D destination (scalar image ie spp=1)
[in] FLGR_Data2D source (complex image ie spp=2)
[return] FLGR_Ret\n
Compute module of a complex image
The return value correspond to constant FLGR_RET_OK,...
""") flgr2d_arith_complex_module;

%feature("autodoc","""
[out] FLGR_Data2D destination (scalar image ie spp=1)
[in] FLGR_Data2D source (complex image ie spp=2)
Compute argument of a complex image
The return value correspond to constant FLGR_RET_OK,...
""") flgr2d_arith_complex_argument;

%feature("autodoc","""
[out] FLGR_Data2D destination (complex)
[in] FLGR_Data2D source (module)
[in] FLGR_Data2D source (argument)
[return] FLGR_Ret\n
Construct a complex image from a module image and a argument image
The return value correspond to constant FLGR_RET_OK,...
""") flgr2d_arith_complex_build;
%feature("autodoc"," ") _wrap_flgr2d_arith_complex_build;



FLGR_Ret flgr1d_arith_inf(FLGR_Data1D *datdest, FLGR_Data1D *data1, FLGR_Data1D *data2);
FLGR_Ret flgr1d_arith_sup(FLGR_Data1D *datdest, FLGR_Data1D *data1, FLGR_Data1D *data2);
FLGR_Ret flgr1d_arith_and(FLGR_Data1D *datdest, FLGR_Data1D *data1, FLGR_Data1D *data2);
FLGR_Ret flgr1d_arith_xor(FLGR_Data1D *datdest, FLGR_Data1D *data1, FLGR_Data1D *data2);
FLGR_Ret flgr1d_arith_atan2(FLGR_Data1D *datdest, FLGR_Data1D *data1, FLGR_Data1D *data2);
FLGR_Ret flgr1d_arith_argument(FLGR_Data1D *datdest, FLGR_Data1D *data1, FLGR_Data1D *data2);
FLGR_Ret flgr1d_arith_module(FLGR_Data1D *datdest, FLGR_Data1D *data1, FLGR_Data1D *data2);
FLGR_Ret flgr1d_arith_multsat(FLGR_Data1D *datdest, FLGR_Data1D *data1, FLGR_Data1D *data2);
FLGR_Ret flgr1d_arith_subsat(FLGR_Data1D *datdest, FLGR_Data1D *data1, FLGR_Data1D *data2);
FLGR_Ret flgr1d_arith_addsat(FLGR_Data1D *datdest, FLGR_Data1D *data1, FLGR_Data1D *data2);
FLGR_Ret flgr1d_arith_div(FLGR_Data1D *datdest, FLGR_Data1D *data1, FLGR_Data1D *data2);
FLGR_Ret flgr1d_arith_mult(FLGR_Data1D *datdest, FLGR_Data1D *data1, FLGR_Data1D *data2);
FLGR_Ret flgr1d_arith_sub(FLGR_Data1D *datdest, FLGR_Data1D *data1, FLGR_Data1D *data2);
FLGR_Ret flgr1d_arith_add(FLGR_Data1D *datdest, FLGR_Data1D *data1, FLGR_Data1D *data2);

%rename (flgr1d_arith_div) flgr1d_arith_const_div_ptr(FLGR_Data1D *, FLGR_Data1D *, FLGR_Vector *);
%rename (flgr1d_arith_mult) flgr1d_arith_const_mult_ptr(FLGR_Data1D *, FLGR_Data1D *, FLGR_Vector *);
%rename (flgr1d_arith_sub) flgr1d_arith_const_sub_ptr(FLGR_Data1D *, FLGR_Data1D *, FLGR_Vector *);
%rename (flgr1d_arith_add) flgr1d_arith_const_add_ptr(FLGR_Data1D *, FLGR_Data1D *, FLGR_Vector *);
%rename (flgr1d_arith_xor) flgr1d_arith_const_xor_ptr(FLGR_Data1D *, FLGR_Data1D *, FLGR_Vector *);
%rename (flgr1d_arith_or) flgr1d_arith_const_or_ptr(FLGR_Data1D *, FLGR_Data1D *, FLGR_Vector *);
%rename (flgr1d_arith_and) flgr1d_arith_const_and_ptr(FLGR_Data1D *, FLGR_Data1D *, FLGR_Vector *);
%rename (flgr1d_arith_sup) flgr1d_arith_const_sup_ptr(FLGR_Data1D *, FLGR_Data1D *, FLGR_Vector *);
%rename (flgr1d_arith_inf) flgr1d_arith_const_inf_ptr(FLGR_Data1D *, FLGR_Data1D *, FLGR_Vector *);
%rename (flgr1d_arith_multsat) flgr1d_arith_const_multsat_ptr(FLGR_Data1D *, FLGR_Data1D *, FLGR_Vector *);
%rename (flgr1d_arith_subsat) flgr1d_arith_const_subsat_ptr(FLGR_Data1D *, FLGR_Data1D *, FLGR_Vector *);
%rename (flgr1d_arith_addsat) flgr1d_arith_const_addsat_ptr(FLGR_Data1D *, FLGR_Data1D *, FLGR_Vector *);


FLGR_Ret flgr1d_arith_const_div_ptr(FLGR_Data1D *datdest, FLGR_Data1D *data1, FLGR_Vector *constant);
FLGR_Ret flgr1d_arith_const_mult_ptr(FLGR_Data1D *datdest, FLGR_Data1D *data1, FLGR_Vector *constant);
FLGR_Ret flgr1d_arith_const_sub_ptr(FLGR_Data1D *datdest, FLGR_Data1D *data1, FLGR_Vector *constant);
FLGR_Ret flgr1d_arith_const_add_ptr(FLGR_Data1D *datdest, FLGR_Data1D *data1, FLGR_Vector *constant);
FLGR_Ret flgr1d_arith_const_xor_ptr(FLGR_Data1D *datdest, FLGR_Data1D *data1, FLGR_Vector *constant);
FLGR_Ret flgr1d_arith_const_or_ptr(FLGR_Data1D *datdest, FLGR_Data1D *data1, FLGR_Vector *constant);
FLGR_Ret flgr1d_arith_const_and_ptr(FLGR_Data1D *datdest, FLGR_Data1D *data1, FLGR_Vector *constant);
FLGR_Ret flgr1d_arith_const_sup_ptr(FLGR_Data1D *datdest, FLGR_Data1D *data1, FLGR_Vector *constant);
FLGR_Ret flgr1d_arith_const_inf_ptr(FLGR_Data1D *datdest, FLGR_Data1D *data1, FLGR_Vector *constant);
FLGR_Ret flgr1d_arith_const_multsat_ptr(FLGR_Data1D *datdest, FLGR_Data1D *data1, FLGR_Vector *constant);
FLGR_Ret flgr1d_arith_const_subsat_ptr(FLGR_Data1D *datdest, FLGR_Data1D *data1, FLGR_Vector *constant);
FLGR_Ret flgr1d_arith_const_addsat_ptr(FLGR_Data1D *datdest, FLGR_Data1D *data1, FLGR_Vector *constant);

FLGR_Ret flgr1d_arith_atan(FLGR_Data1D *datdest, FLGR_Data1D *data1);
FLGR_Ret flgr1d_arith_asin(FLGR_Data1D *datdest, FLGR_Data1D *data1);
FLGR_Ret flgr1d_arith_acos(FLGR_Data1D *datdest, FLGR_Data1D *data1);
FLGR_Ret flgr1d_arith_tan(FLGR_Data1D *datdest, FLGR_Data1D *data1);
FLGR_Ret flgr1d_arith_sin(FLGR_Data1D *datdest, FLGR_Data1D *data1);
FLGR_Ret flgr1d_arith_cos(FLGR_Data1D *datdest, FLGR_Data1D *data1);
FLGR_Ret flgr1d_arith_abs(FLGR_Data1D *datdest, FLGR_Data1D *data1);
FLGR_Ret flgr1d_arith_ceil(FLGR_Data1D *datdest, FLGR_Data1D *data1);
FLGR_Ret flgr1d_arith_floor(FLGR_Data1D *datdest, FLGR_Data1D *data1);
FLGR_Ret flgr1d_arith_invert(FLGR_Data1D *datdest, FLGR_Data1D *data1);
FLGR_Ret flgr1d_arith_powb(FLGR_Data1D *datdest, FLGR_Data1D *data1, FLGR_Vector *power);
FLGR_Ret flgr1d_arith_logb(FLGR_Data1D *datdest, FLGR_Data1D *data1, FLGR_Vector *base);












FLGR_Ret flgr2d_arith_inf(FLGR_Data2D *datdest, FLGR_Data2D *data1, FLGR_Data2D *data2);
FLGR_Ret flgr2d_arith_sup(FLGR_Data2D *datdest, FLGR_Data2D *data1, FLGR_Data2D *data2);
FLGR_Ret flgr2d_arith_and(FLGR_Data2D *datdest, FLGR_Data2D *data1, FLGR_Data2D *data2);
FLGR_Ret flgr2d_arith_xor(FLGR_Data2D *datdest, FLGR_Data2D *data1, FLGR_Data2D *data2);
FLGR_Ret flgr2d_arith_atan2(FLGR_Data2D *datdest, FLGR_Data2D *data1, FLGR_Data2D *data2);
FLGR_Ret flgr2d_arith_argument(FLGR_Data2D *datdest, FLGR_Data2D *data1, FLGR_Data2D *data2);
FLGR_Ret flgr2d_arith_module(FLGR_Data2D *datdest, FLGR_Data2D *data1, FLGR_Data2D *data2);
FLGR_Ret flgr2d_arith_multsat(FLGR_Data2D *datdest, FLGR_Data2D *data1, FLGR_Data2D *data2);
FLGR_Ret flgr2d_arith_subsat(FLGR_Data2D *datdest, FLGR_Data2D *data1, FLGR_Data2D *data2);
FLGR_Ret flgr2d_arith_addsat(FLGR_Data2D *datdest, FLGR_Data2D *data1, FLGR_Data2D *data2);
FLGR_Ret flgr2d_arith_div(FLGR_Data2D *datdest, FLGR_Data2D *data1, FLGR_Data2D *data2);
FLGR_Ret flgr2d_arith_mult(FLGR_Data2D *datdest, FLGR_Data2D *data1, FLGR_Data2D *data2);
FLGR_Ret flgr2d_arith_sub(FLGR_Data2D *datdest, FLGR_Data2D *data1, FLGR_Data2D *data2);
FLGR_Ret flgr2d_arith_add(FLGR_Data2D *datdest, FLGR_Data2D *data1, FLGR_Data2D *data2);

%rename (flgr2d_arith_div) flgr2d_arith_const_div_ptr(FLGR_Data2D *, FLGR_Data2D *, FLGR_Vector *);
%rename (flgr2d_arith_mult) flgr2d_arith_const_mult_ptr(FLGR_Data2D *, FLGR_Data2D *, FLGR_Vector *);
%rename (flgr2d_arith_sub) flgr2d_arith_const_sub_ptr(FLGR_Data2D *, FLGR_Data2D *, FLGR_Vector *);
%rename (flgr2d_arith_add) flgr2d_arith_const_add_ptr(FLGR_Data2D *, FLGR_Data2D *, FLGR_Vector *);
%rename (flgr2d_arith_xor) flgr2d_arith_const_xor_ptr(FLGR_Data2D *, FLGR_Data2D *, FLGR_Vector *);
%rename (flgr2d_arith_or) flgr2d_arith_const_or_ptr(FLGR_Data2D *, FLGR_Data2D *, FLGR_Vector *);
%rename (flgr2d_arith_and) flgr2d_arith_const_and_ptr(FLGR_Data2D *, FLGR_Data2D *, FLGR_Vector *);
%rename (flgr2d_arith_sup) flgr2d_arith_const_sup_ptr(FLGR_Data2D *, FLGR_Data2D *, FLGR_Vector *);
%rename (flgr2d_arith_inf) flgr2d_arith_const_inf_ptr(FLGR_Data2D *, FLGR_Data2D *, FLGR_Vector *);
%rename (flgr2d_arith_multsat) flgr2d_arith_const_multsat_ptr(FLGR_Data2D *, FLGR_Data2D *, FLGR_Vector *);
%rename (flgr2d_arith_subsat) flgr2d_arith_const_subsat_ptr(FLGR_Data2D *, FLGR_Data2D *, FLGR_Vector *);
%rename (flgr2d_arith_addsat) flgr2d_arith_const_addsat_ptr(FLGR_Data2D *, FLGR_Data2D *, FLGR_Vector *);


FLGR_Ret flgr2d_arith_const_div_ptr(FLGR_Data2D *datdest, FLGR_Data2D *data1, FLGR_Vector *constant);
FLGR_Ret flgr2d_arith_const_mult_ptr(FLGR_Data2D *datdest, FLGR_Data2D *data1, FLGR_Vector *constant);
FLGR_Ret flgr2d_arith_const_sub_ptr(FLGR_Data2D *datdest, FLGR_Data2D *data1, FLGR_Vector *constant);
FLGR_Ret flgr2d_arith_const_add_ptr(FLGR_Data2D *datdest, FLGR_Data2D *data1, FLGR_Vector *constant);
FLGR_Ret flgr2d_arith_const_xor_ptr(FLGR_Data2D *datdest, FLGR_Data2D *data1, FLGR_Vector *constant);
FLGR_Ret flgr2d_arith_const_or_ptr(FLGR_Data2D *datdest, FLGR_Data2D *data1, FLGR_Vector *constant);
FLGR_Ret flgr2d_arith_const_and_ptr(FLGR_Data2D *datdest, FLGR_Data2D *data1, FLGR_Vector *constant);
FLGR_Ret flgr2d_arith_const_sup_ptr(FLGR_Data2D *datdest, FLGR_Data2D *data1, FLGR_Vector *constant);
FLGR_Ret flgr2d_arith_const_inf_ptr(FLGR_Data2D *datdest, FLGR_Data2D *data1, FLGR_Vector *constant);
FLGR_Ret flgr2d_arith_const_multsat_ptr(FLGR_Data2D *datdest, FLGR_Data2D *data1, FLGR_Vector *constant);
FLGR_Ret flgr2d_arith_const_subsat_ptr(FLGR_Data2D *datdest, FLGR_Data2D *data1, FLGR_Vector *constant);
FLGR_Ret flgr2d_arith_const_addsat_ptr(FLGR_Data2D *datdest, FLGR_Data2D *data1, FLGR_Vector *constant);

FLGR_Ret flgr2d_arith_atan(FLGR_Data2D *datdest, FLGR_Data2D *data1);
FLGR_Ret flgr2d_arith_asin(FLGR_Data2D *datdest, FLGR_Data2D *data1);
FLGR_Ret flgr2d_arith_acos(FLGR_Data2D *datdest, FLGR_Data2D *data1);
FLGR_Ret flgr2d_arith_tan(FLGR_Data2D *datdest, FLGR_Data2D *data1);
FLGR_Ret flgr2d_arith_sin(FLGR_Data2D *datdest, FLGR_Data2D *data1);
FLGR_Ret flgr2d_arith_cos(FLGR_Data2D *datdest, FLGR_Data2D *data1);
FLGR_Ret flgr2d_arith_abs(FLGR_Data2D *datdest, FLGR_Data2D *data1);
FLGR_Ret flgr2d_arith_ceil(FLGR_Data2D *datdest, FLGR_Data2D *data1);
FLGR_Ret flgr2d_arith_floor(FLGR_Data2D *datdest, FLGR_Data2D *data1);
FLGR_Ret flgr2d_arith_invert(FLGR_Data2D *datdest, FLGR_Data2D *data1);
FLGR_Ret flgr2d_arith_powb(FLGR_Data2D *datdest, FLGR_Data2D *data1, FLGR_Vector *power);
FLGR_Ret flgr2d_arith_logb(FLGR_Data2D *datdest, FLGR_Data2D *data1, FLGR_Vector *base);









FLGR_Ret flgr1d_arith_complex_module(FLGR_Data1D *rdatdest, FLGR_Data1D *idatsrc);
FLGR_Ret flgr1d_arith_complex_argument(FLGR_Data1D *rdatdest, FLGR_Data1D *idatsrc);
FLGR_Ret flgr1d_arith_complex_build(FLGR_Data1D *idatdest, FLGR_Data1D *datmodule, FLGR_Data1D *datarg);


FLGR_Ret flgr2d_arith_complex_module(FLGR_Data2D *rdatdest, FLGR_Data2D *idatsrc);
FLGR_Ret flgr2d_arith_complex_argument(FLGR_Data2D *rdatdest, FLGR_Data2D *idatsrc);
FLGR_Ret flgr2d_arith_complex_build(FLGR_Data2D *idatdest, FLGR_Data2D *datmodule, FLGR_Data2D *datarg);


%feature("autodoc","""
[out] FLGR_Data1D destination
[in] FLGR_Data1D source
[in] Integer right shift count
Compute Sup between signal input and right shifted signal input
The return value correspond to constant FLGR_RET_OK,...
""") flgr1d_arith_sup_shift_right;
FLGR_Ret flgr1d_arith_sup_shift_right(FLGR_Data1D *datdest, FLGR_Data1D *data1, int right_shift_size);

%feature("autodoc","""
[out] FLGR_Data1D destination
[in] FLGR_Data1D source
[in] Integer left shift count
Compute Sup between signal input and left shifted signal input
The return value correspond to constant FLGR_RET_OK,...
""") flgr1d_arith_sup_shift_left;
FLGR_Ret flgr1d_arith_sup_shift_left(FLGR_Data1D *datdest, FLGR_Data1D *data1, int left_shift_size);

%feature("autodoc","""
[out] FLGR_Data1D destination
[in] FLGR_Data1D source
[in] Integer right shift count
Compute Inf between signal input and right shifted signal input
The return value correspond to constant FLGR_RET_OK,...
""") flgr1d_arith_inf_shift_right;
FLGR_Ret flgr1d_arith_inf_shift_right(FLGR_Data1D *datdest, FLGR_Data1D *data1, int right_shift_size);

%feature("autodoc","""
[out] FLGR_Data1D destination
[in] FLGR_Data1D source
[in] Integer left shift count
Compute Inf between signal input and left shifted signal input
The return value correspond to constant FLGR_RET_OK,...
""") flgr1d_arith_inf_shift_left;
FLGR_Ret flgr1d_arith_inf_shift_left(FLGR_Data1D *datdest, FLGR_Data1D *data1, int left_shift_size);



%nocallback;
